package com.csx.midware.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.params.SetParams;

/**
 * Redis缓存示例
 */
public class RedisCacheExample {

    private Jedis jedis;

    public RedisCacheExample() {
        jedis = new Jedis("localhost");
    }


    public String getCachedData(String key) {
        // 尝试从缓存中获取数据
        String cachedValue = jedis.get(key);
        if (cachedValue != null) {
            System.out.println("Data retrieved from cache: " + cachedValue);
            return cachedValue;
        }

        // 如果缓存中没有数据，则从数据库中获取数据
        String dbValue = getDataFromDatabase(key);
        if (dbValue != null) {
            // 将数据存入缓存，设置过期时间为1小时
            SetParams params = SetParams.setParams().ex(3600);
            jedis.set(key, dbValue, params);
            System.out.println("Data retrieved from database and stored in cache: " + dbValue);
        }
        return dbValue;
    }


    private String getDataFromDatabase(String key) {
        // 模拟从数据库中获取数据
        return "Data for " + key;
    }


    public static void main(String[] args) {
        RedisCacheExample example = new RedisCacheExample();
        example.getCachedData("exampleKey");
        example.getCachedData("exampleKey"); // 第二次调用将从缓存中获取数据
    }
}